﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GrayParrot.Web.Formly;

namespace FimetContoDeposito.BLL.Metadata
{
    public class CustomerOperatorMetadata
    {
        [FieldGroup(GroupName = "primo", Row = 1, Index = 1, NumberOfColumns = 6)]
        [FormFieldAttribute(Type = FormFieldTypes.Input)]
        [TextTemplateOptionsAttribute(Label = "Nome",
            Description = "Lunghezza max 50 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = true,
            MinLength = 0,
            MaxLength = 50)]
        public string Nome { get; set; }

        [FieldGroup(GroupName = "primo", Row = 1, Index = 2, NumberOfColumns = 6)]
        [FormFieldAttribute(Type = FormFieldTypes.Input)]
        [TextTemplateOptionsAttribute(Label = "Cognome",
            Description = "Lunghezza max 50 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = true,
            MinLength = 0,
            MaxLength = 50)]
        public string Cognome { get; set; }

        [FieldGroup(GroupName = "secondo", Row = 1, Index = 1, NumberOfColumns = 4)]
        [FormFieldAttribute(Type = FormFieldTypes.Input)]
        [TextTemplateOptionsAttribute(Label = "Username",
            Description = "Lunghezza max 50 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = true,
            MinLength = 0,
            MaxLength = 50)]
        public string Username { get; set; }

        [FieldGroup(GroupName = "secondo", Row = 1, Index = 2, NumberOfColumns = 4)]
        [FormFieldAttribute(Type = FormFieldTypes.Input)]
        [TextTemplateOptionsAttribute(Label = "Password",
            Description = "Lunghezza max 50 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = true,
            MinLength = 0,
            MaxLength = 50, 
            Behavior=TextFieldBehaviors.Password)]
        public string Password { get; set; }

        [FieldGroup(GroupName = "secondo", Row = 1, Index = 3, NumberOfColumns = 4)]
        [FormFieldAttribute(Type = FormFieldTypes.Checkbox)]
        [CheckBoxTemplateOptions(Label = "Abilitato",
            Placeholder = "Operatore abilitato si/no",
            Required = false,
            DefaultValue=false)]
        public bool IsApprovato { get; set; }

        [FieldGroup(GroupName = "terzo", Row = 1, Index = 1, NumberOfColumns = 6)]
        [FormFieldAttribute(Type = FormFieldTypes.Input)]
        [TextTemplateOptionsAttribute(Label = "Email",
            Description = "Lunghezza max 150 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = true,
            MinLength = 0,
            MaxLength = 150,
            Behavior=TextFieldBehaviors.Email)]
        public string Email { get; set; }

        [FieldGroup(GroupName = "terzo", Row = 1, Index = 1, NumberOfColumns = 6)]
        [FormFieldAttribute(Type = FormFieldTypes.Select)]
        [SelectTemplateOptionsAttribute(Label = "Azienda",
            Description = "Lunghezza max 50 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = true,
            Callback = "/api/Common/LoadCustomers",ForceLoad=true)]
        public string Customer { get; set; }

        [FieldGroup(GroupName = "quarto", Row = 1, Index = 1, NumberOfColumns = 12)]
        [FormFieldAttribute(Type = FormFieldTypes.Textarea)]
        [TextAreaTemplateOptions(Label = "Note",
            Description = "Lunghezza max 200 caratteri",
            Placeholder = "Indicare il nome dell'operatore",
            Required = false,
            MinLength = 0,
            MaxLength = 200, Rows=2, Cols=100)]
        public string Note { get; set; }

        public CustomerOperatorMetadata()
        {

        }
    }
}
